/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package grafox.Domain;

import grafox.Interface.ActionOnTerminate;
import grafox.Interface.ActionOnVisited;

/**
 *
 * @author admindev
 */
public class ArestaX extends ObjectX {
    private GrafoX grafo;
    private boolean direcional;

    public GrafoX getGrafo() {
        return grafo;
    }

    public void setGrafo(GrafoX grafo) {
        this.grafo = grafo;
    }
    
    public ArestaX(long id, String nome,VerticeX origem,VerticeX destino, boolean direcional) {
        super(id, nome);
        this.origem=origem;
        this.destino=destino;
        this.direcional = direcional;
    }

    public ArestaX(String nome,VerticeX origem,VerticeX destino, boolean direcional) {
        super(nome);
        this.origem=origem;
        this.destino=destino;
        this.direcional = direcional;
    }
    
    protected VerticeX origem;

    public VerticeX getOrigem() {
        return origem;
    }

    public void setOrigem(VerticeX origem) {
        this.origem = origem;
    }

    public VerticeX getDestino() {
        return destino;
    }

    public void setDestino(VerticeX destino) {
        this.destino = destino;
    }
    protected  VerticeX destino;
    
    public boolean vaiPara(VerticeX destino)
    {
        if(direcional)
            return this.destino.equals(destino);
        else
            return this.destino.equals(destino) || this.origem.equals(destino);
    }
    
    public void visit() {

        for (Object object : propriedades) {
            if (object instanceof ActionOnVisited) {
                ((ActionOnVisited) object).execute(this);
            }
        }
    }
    
    
    public void terminate() {

        for (Object object : propriedades) {
            if (object instanceof ActionOnTerminate) {
                ((ActionOnTerminate) object).execute(this);
            }
        }
    }
        
    public double getPeso()
    {
        return 0;
    }
    
}
